home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-11
/
adam.zip
/
ADAM.DOC
< prev
next >
Wrap
Text File
|
1990-01-02
|
184KB
|
3,432 lines
-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----
-- ╔══════════════════╗ -+----+----+----+----+----+----+----+----+----+----+----
-- ║ ║ ----+----+----+----+----+----+----+----+----+----+----
-- ║ ║ ----+----+----+----+----+----+----+----+----+----+----
-- ║ ║ ----+----+----+----+----+----+----+----+----+----+----
-- ║ A D A M ║ ----+---╔══════╗---+----+----+----+----+----+----+----
-- ║ ║ ----+---║ MOVE ║ -+----+----+----+----+----+----+----
-- ║ ╔═══════════════════╗║ SIZE ║ -+----+----+----+----+----+----+----
-- ║ ║ ║║ TEXT ║ -+----+----+----+----+----+----+----
-- ║ ║ ║║ CODE ║ -+----+----+----+----+----+----+----
-- ║ ║ ║║ WT-2 ║ -+----+----+----+----+----+----+----
-- ╚═════════║ (C)1990 By ║║ FORE ║ -+----+----+----+----+----+----+----
---- ║ ║║ BACK ║ -+----+----+----+----+----+----+----
-----+----+- ║ Custom Software ║║ HELP ║ -+----+----+----+----+----+----+----
-----+----+- ║ ║║ PLIB ║ -+----+----+----+----+----+----+----
-----+----+- ║ ║║ NOTE ║ -+----+----+----+----+----+----+----
-----+----+- ║ ║║ EDIT ║ -+----+----+----+----+----+----+----
-----+----+- ╚═══════════════════╝║ UTIL ║ -+----+----+----+----+----+----+----
-----+----+--- ║ QUIT ║ -+----+----+----+----+----+----+----
-----+----+----+----+----+----+---╚══════╝ -+----+----+----+----+----+----+----
-----+----+----+----+----+----+----+ -+----+----+----+----+----+----+----
-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----
-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----
-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----
-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ C ║ │║ ADAM 2.1 CONTENTS ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
* Adam features ................................................ 1
* Windows ...................................................... 2
* Window attributes ............................................ 3
* Utilities .................................................... 4
* Browse windows ............................................... 5
* Browse continued ............................................. 6
* Custom input/Object editor ................................... 7
* Object verbs ................................................. 8
* Object library ............................................... 9
* Tips & Tricks ................................................ 10
* Sample program ............................................... 12
* Animation .................................................... 42
* Importing objects ............................................ 44
* Font library ................................................. 45
* How to create objects ........................................ 46
* Object files ................................................. 47
* A brief history .............................................. 50
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ INTRODUCTION ║ ║ 1 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
Welcome to A.D.A.M. (Advanced Data Access Manager) program generator
for Clipper. Most of you have probably read about the new wave of
program generator's on the market. They all stress the benefits of
using the latest in template programming.
Adam takes the template theory a step further, instead of writing
program modules to generate code, with Adam you design SMART OBJECTS
which Adam links together to form your complete program.
What are SMART OBJECTS?
_______________________
Smart objects can be a menu, screen, browse window, lookup, picklist
or even a complete sub-program or procedure. Smart objects are very
similar to procedure programs except for a couple of very unusual
features.
These smart objects have the ability to communicate with ADAM by
asking questions, which Adam passes on to you, and getting your
answer which Adam passes back to the object.
This system prevents you from having to remember what a procedure
requires as parameters in order to call it in your program. This
power becomes even more evident if you wrote the procedure about six
months ago.
Other features included in Adam
_______________________________
* Generates single or multi-user code.
* Fast screen design tools.
* Easy custom menu design for vertical or Lotus style menus.
* Integrated object file editor.
* Comes with complete set of object files ready to use.
* Custom screen and menu colors.
* Create or modify database files.
* Create index files.
* Define your own menu help screens.
* Attach lookups or a picklist to selected input fields.
* Initialize and calculation calls.
* Free telephone support and updates.
* Generates custom looking programs.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 2 ║ │║ WINDOWS ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
As you work with Adam you will use windows to store your objects in,
each window contains a different object that you have created. Adam
has ten different types of windows, numbered from 0 through 9.
Below are the different types of windows that can be created:
TYPE WINDOW
____ ________________________________________
0 Double line (lotus style)
1 Single line
2 Double line
3 Single side double top
4 Double side single top
5 Solid with black shadow
6 Single line exploding
7 Double line exploding
8 Single side double top exploding
9 Double side single top exploding
Window types are selected by pressing "W" while at the main menu or,
by moving the cursor to "WT-#" and pressing enter. The window type
you have selected will be displayed next to the "WT-#" menu option.
Adam windows can contain several different types of objects such as
browse, edit, lookup, picklist, text, code, and menu objects.
Most of your time with Adam will be spent describing the attributes
that your windows objects contain, things like size, color, location
contents, type and if your window is quiet or contains sound.
Window objects are just one of Adam's many exciting features. Later
on we will show you other features such as SMART OBJECTS.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ WINDOW ATTRIBUTES ║ ║ 3 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
MOVE - The move command allows you to position your windows anywhere
on the screen. Use the arrow keys to move the window around.
SIZE - The size command lets you stretch the window to any shape you
want. Use the arrow keys to size the window, holding down the
shift key and pressing the down or right arrow keys will make
the window stretch out to the end of the screen.
TEXT - The text command allows you to enter messages for titles and
menu options for MENU objects. If there is existing text that
was in the window from previous editing, Adam will warn you
and ask if you want to erase existing text. Pressing the 'F7'
and 'F8' keys provides a copy and paste for a line of text.
Text can also be centered automatically while you are in the
SIZE mode. Simply press the ESC key and all the lines in the
window will be centered.
HELP - The help command lets you add help messages to each of your
menu options.
FORE - The fore command lets you change the foreground or text color
in your window.
BACK - The back command lets you change the background color of your
window.
CODE - The code command is where you tell Adam you are finished with
your window and are ready to save it. Adam will prompt you
for the name of your window object. You can enter up to ten
characters for the name. If this is your first window object
Adam will ask you to enter a program file name to save your
window objects in.
This allows you to go back later and edit any window objects
that belong to this program. If you fail to enter a name for
the object then Adam will NOT save the object.
NOTE - The note command turns the window sound on or off. If sound
is on then Adam adds sound to your windows.
EDIT - The edit command lets you select a window object from a list
of all the objects in your program. You can then edit the
object, making any changes and save it again.
UTIL - The util command presents you with a menu of Adams database
and object utilities. These command are listed in more detail
in the UTILITIES section.
PLIB - The plib command allows you to attach procedure programs or
what we call SMART OBJECTS to your window objects. These are
discussed further in the LIBRARY section.
All Adam menu commands can be accessed by pressing the first
letter of each command. The ESC key will toggle the main menu
on or off to allow you to view your screen.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 4 ║ │║ UTILITIES ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
Adam comes with built in utilities to create or modify a database, a
utility to build index files and other required tools needed to make
your program designing fast and easy.
FIELD TYPE LEN DEC
╔═════════════╤══════╤═════╤══════╗
║ QTY │ N │ 4 │ 0 ║
║ STOCKNO │ C │ 10 │ 0 ║
║ DES │ C │ 30 │ 0 ║
║ VENDOR │ C │ 20 │ 0 ║
║ COST │ N │ 8 │ 2 ║
║ PRICE │ N │ 8 │ 2 ║
║ ORDER │ N │ 4 │ 0 ║
║ FLAG │ C │ 1 │ 0 ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
╚═════════════════════════════════╝
CREATE - database structure lets you create a new database file. The
field names are entered first, followed by the type, length
and decimal. There is limited error checking for this input
such as fields with the same name, type of fields, entering
a length that is too large and incorrect decimal positions.
MODIFY - database structure is very similar to the CREATE command,
except that if you change the name of a field, the MODIFY
command will only append fields of the same name to your
new structure.
╔═Index on════╗
║ QTY ║
║ STOCKNO ║
║ DES ║
║ VENDOR ║
║ COST ║
║ PRICE ║
║ ORDER ║
║ FLAG ║
╚═════════════╝
╔═Enter index file name════════════════════════════════════════════════════════╗
║ INDEX ON STOCKNO TO STOCK ║
╚══════════════════════════════════════════════════════════════════════════════╝
INDEX - database index file allows you to select a database file
and key field or multiple fields to create an index file.
SET - value of F2 key will let you define the F2 function key as
a keyboard macro. You can then use this key to help you
design your text windows for title screens. The F2 key has
a default of "█" which is CHR(219).
Experiment with different characters such as CHR(176) '░'
to create special effects and add texture to your screens.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ UTILITIES ║ ║ 5 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
BROWSE - fields into browse window allows you to build a dBASE like
browse screen. This window can have many different types of
attributes attached to it.
Insert first asks you for the database file you want to use
and the indexes. If this will be a browse window you should
select all the indexes, so that they are updated while the
records are being edited.
Then you select the fields you want Adam to place into your
window. Each time you select a field, Adam asks if you want
this field to call another object.
╔Procedure to call before read═════════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
If you attach a call to another object at the field level
then the call takes place when the user tries to edit the
field with the call attached. If you do not want this
field to call another object then just press enter.
╔Enter Title For Window Object═════════════════════════════════════════════════╗
║Inventory Listing ║
╚══════════════════════════════════════════════════════════════════════════════╝
After you have selected all the fields you want in your
window, press ESC. Adam will ask you for the window type.
╔Enter window object type {BLP}════════════════════════════════════════════════╗
║B ║
╚══════════════════════════════════════════════════════════════════════════════╝
There are three type of browse windows that you can select
from. Below is a list of the window types and their window
features.
B - BROWSE The browse window allows editing.
L - LOOKUP The lookup window has no editing features.
P - PICKLIST The picklist window has no editing features,
but does a replace of all fields used in the picklist
into the calling window object.
╔Enter Filter Condition════════════════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
After you have selected the window type, you are asked if
you want to place any filter conditions on this window.
╔Enter Initialize Procedure Name═══════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Next you can enter an initialization procedure to call just
before this object is called.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 6 ║ │║ UTILITIES ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
╔Enter Calculation Procedure Name══════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
You can also call a calculation object to call after this
object has done the READ. Initialization and calculation
objects are created in a text window by entering the object
names in lower case. This will tell Adam that you want the
text window generated as a CODE object.
╔Will this object call another {BLPN}?═════════════════════════════════════════╗
║L ║
╚══════════════════════════════════════════════════════════════════════════════╝
The last question you have to answer about your object is
will this object call another object. Objects can call any
other object that you wish, they do not have to be a browse
type object.
If you will not be calling another object enter a letter "N"
for NONE. If you answer B,L or P you will be asked to enter
the name of the new object to call.
╔Enter object name to call═════════════════════════════════════════════════════╗
║LOOK ║
╚══════════════════════════════════════════════════════════════════════════════╝
After you have answered all the prompts for your object, you
can press the ESC key to exit from the utility menu. You can
now see your browse object on the screen.
At this time you can move the object or change the colors of
your object before saving it.
Holding down the shift key and pressing the letters "F" or
"B" will allow you to change the TITLE colors for your new
object.
╔═Inventory Listing════════════════════════════════════════════════════════════╗
║ DES QTY STOCKNO VENDOR ║
║══╤════════════════════════════════╤══════╤════════════╤══════════════════════║
║█ │ ██████████████████████████████ │ ████ │ ██████████ │ ████████████████████ ║
║█ │ ██████████████████████████████ │ ████ │ ██████████ │ ████████████████████ ║
║█ │ ██████████████████████████████ │ ████ │ ██████████ │ ████████████████████ ║
║█ │ ██████████████████████████████ │ ████ │ ██████████ │ ████████████████████ ║
║█ │ ██████████████████████████████ │ ████ │ ██████████ │ ████████████████████ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Now select the CODE option from the main menu to save your objects.
Remember to add comment lines to your object, this is a very helpful
feature if you need to go back and change the window objects.
╔═Object═════Description═══════════════════════════════════════════════════════╗
║ EDIT edit inventory window ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ UTILITIES ║ ║ 7 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
EDIT - window works the same as inserting fields into the browse
window, with just a few differences.
The EDIT command lets you place the fields into your own
edit screen design. You can also add text messages to this
window.
This command also lets you insert custom picture templates
and a valid clause to each input field.
You also have the option of attaching the built-in EDITMENU
automatically to your custom edit windows.
ADAM - object editor provides a built in program editor to edit
your object files or to create new object files.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ADAM OBJECT EDITOR Line: 1 Col: 0 ║
╚══════════════════════════════════════════════════════════════════════════════╝
PROCEDURE report
PARAMETER dbf,ntx,ezform,header,expr
NOTE DBF Report DBF
NOTE ONE Select one
NOTE FRM Format File
NOTE ASK Enter Report Heading
NOTE ASK Enter Filter Condition For Report
SELECT 0
IF multuser
LANOPEN(dbf,"",.F.)
IF lanresult
RETURN
ENDIF
ELSE
USE &dbf
ENDIF
SET INDEX TO &ntx
SAVE SCREEN TO rep_scr
DO window WITH 22,0,24,79,SETCOLOR(),7,1
The example object shown above is a sample of SMART OBJECTS
that can ask questions and receive answers from Adam. The
way we turn our normal procedure objects into SMART OBJECTS
is by adding a NOTE command in our object file.
The NOTE command is used by Clipper as a comment line. Adam
uses this as a means of communicating with your object file
to receive questions and perform different type of commands
which are built into Adam.
We call these commands "ACTION VERBS" meaning that we want
Adam to do something and then tell our objects what actions
took place. (You great minds working with AI are still in
the dark ages).
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 8 ║ │║ UTILITIES ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
The following is a list of the -ACTION VERBS- that Adam can
understand.
VERB ACTION returned in VARIABLE TYPE
____ __________________ ________ ____
DBF GET DATABASE dbf string
NTX GET INDEXES ntx string
ONE GET ONE INDEX ntx string
FLD GET FIELD LIST fld string
HUE GET SETCOLOR() color string
ASK ASK QUESTION ans string
FRM GET REPORT FORMS frm string
LBL GET LABEL FORMS lbl string
TXT GET FILES *.TXT txt string
PRG GET FILES *.PRG prg string
DOC GET FILES *.DOC doc string
NUM GET NUMBER num numeric
All strings return a null as a default and numeric returns
a zero value as a default.
The information following the object verbs are questions to
ask the user. For all verbs that pertain to files you must
try to keep your questions under 13 characters in length so
it fits inside the action window.
Adam passes the answers back to the object file as a string
containing the parameters needed to call the object files.
DEBUG - current object allows you to edit the current window object
in a browse type window. You will find this feature helpful
when you just need to make a small change in an object, and
you don't want to redo the complete object.
IMPORT - window object import lets you suspend work on the current
file and open another file to import an existing object in-
to your current program.
This makes it possible to create fantastic title screens to
re-use later in another program. Using this feature allows
you to even create a whole file of shapes, graphics, menus,
or special window objects, and call them into your programs
whenever you need them.
REGULAR- regular code or network. Just press the letter 'R' or 'N'
to toggle from regular or multiuser code generation.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ OBJECT LIBRARY ║ ║ 9 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
As you create menu options with Adam you will be attaching
actions to each menu choice. These actions can tell Adam
that you want a menu option to call another menu, screen,
code, browse window or an object from your object library.
You can also type in any commands manually into the menu
options. (Any Clipper compatible commands work.) To call up
the object library press the F1 key.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Description Listing Vendor Listing ReOrder Report ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Description Listing═══════════════════════════════════════════════════════════╗
║DO report WITH "SAMPLE","DES","SAMPLE.FRM","Inventory Listing By Description",║
║"" ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
╔═Objects════════╗
Adam will display a list of all the objects ║ TABLE.OBJ ║
that are in the current directory. ---------> ║ REPORT.OBJ √ ║
║ PRINTER.OBJ √ ║
Select the object you want to attach to the ║ ADAMLIBA.OBJ √ ║
menu procedure option. And just answer the ║ FILTER.OBJ √ ║
questions that your SMART OBJECTS ask you. ║ LETTERS.OBJ √ ║
║ BACKUP.OBJ √ ║
As you select objects from your library the ║ MULTUSER.OBJ √ ║
program will keep track of which object you ║ PACKFILE.OBJ ║
have selected. This is the way Adam knows ║ LABELS.OBJ ║
which objects to include in your program. ║ USERHELP.OBJ ║
║ ADAMLIBB.OBJ √ ║
You can manually tell Adam to use or not to ║ DCODE.OBJ ║
use an object by moving down to the objects ║ CARDEX.OBJ ║
and pressing the right arrow key. ╚════════════════╝
The right arrow key toggles the object from on to off, Some
objects are automatically used by Adam, these are MULTUSER
and ADAMLIB*. The ADAMLIB* is where you can place any new
procedures or functions that might be needed for a special,
or unique application you are designing.
If you are creating a large procedure, you should create it
as a smart object file. Save your ADAMLIB* just for very
small functions or procedures.
The ADAMLIB*.OBJ already contains a few functions that you
can call from your own SMART OBJECTS. Listed below are some
of the functions that are in this file.
WINDOW - DO window WITH rt,ct,rb,cb,"color",type,snd
DOS - DO dos
GETANS - GETANS("message","default","valid")
MEDIT - MEDIT("temp","memofield")
PCHECK - IF PCHECK() ; SET PRINT ON ; ENDIF
CENTER - @ ??,?? SAY CENTER("message")
FILTER - FILTER("expr")
READIT - Use in place of: SET CURSOR ON ; READ ; SET CURSOR OFF
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 10 ║ │║ TIPS ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
- Layout your program design on paper first, before you start devel-
oping your ADAM programs.
- Always create your database and any related index,report and label
files before you start to create your program.
- Allow at least one space on both sides of your menu options, this
will create better looking menus.
- Remember to press the right arrow key to activate a library object
when entering objects manually, otherwise ADAM will not grab that
object when generating your program.
- Always select all your index files when using a Table, Browse or
custom Edit window, otherwise index files can not be maintained.
- Avoid using exploding window objects for large windows. Exploding
windows will look better when used with smaller windows due to the
time involved in drawing the window.
- Use Note (sound) sparingly to draw attention to special window ob-
jects, such as your main menu.
- Try to avoid using more than three or four different colors in the
designing of your program. Too many colors tend to look confusing.
- Do not use too many different types of windows. Maintain a uniform
appearance in your screen designs.
- Always remove the procedure object first before removing the menu
option.
- Menu size should not be larger than the number of options the menu
contains.
- Always try to make each menu option start with a different letter.
This will allow the user to quickly select a menu option just by
pressing the first letter of a menu option.
- Use overlapping menus whenever possible to show the connection be-
tween the menus.
- Place an "*" symbol as your first menu option procedure if you are
not ready to create an object for the first menu option. This will
force ADAM to write the object as MENU code and not as TEXT.
- When creating a custom edit window the field gets are read in the
order that they are selected, not the order they are placed.
- When using a lotus style menu, position your title screen on the
fourth line of the display and save the last line for your help
messages. This gives your screens a more professional appearance.
- When using memo fields, try to place the memo fields last in your
browse or edit windows. This will allow the user to press Ctrl-End
to go immediately into memo edit.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ TIPS ║ ║ 11 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
- Adam recognizes NINE different types of objects. They are listed
below by name and how they are used.
NAME APPLICATION
____ ____________________________________________________________
MENU Contains all types of menus.
TEXT Used for title screens, or any window that contains text.
BROW A browse window with editing features.
LOOK A browse window without editing features.
PICK A browse window that does a replace.
EDIT A custom designed full screen editing window.
GETS Generate says/gets procedure only.
CODE A text window saved with a lower case object name. Used to
contain procedure code that you enter yourself.
FILM Animation window.
- One of the most powerful features in Adam is the ability to use a
VALID command to call a function.
EXAMPLE:VALID
-------------
VALID CHECKNO(check)
- Use the STARTUP feature in the first window, to call a CODE window
that contains memory variable initialization, or SET KEY commands.
EXAMPLE:STARTUP
---------------
IF FILE("INVNUM.MEM")
RESTORE FROM INVNUM
ELSE
invoice = 1001
SAVE TO INVNUM
ENDIF
invoice = invoice + 1
EXAMPLE:QUIT
------------
RELEASE ALL EXCEPT invoice
SAVE TO INVNUM
- Use a MENU window to create a quick picklist window. And for each
menu option use the -KEYBOARD- command to stuff the keyboard with
the users choice.
RED KEYBOARD "RED"
BLACK KEYBOARD "BLACK"
GREEN KEYBOARD "GREEN"
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 12 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
Lets take a step by step walk through Adam and create our first Adam
program. The first thing we need to do is create our database file,
press "U" for Utility menu.
╔═Utility Menu═════════╗
║█Create database file█║
║ Modify database file ║
║ Index database files ║
║ Browse window design ║
║ Lookup window design ║
║ Pickup window design ║
║ Editit window design ║
║ Set values of F2 key ║
║ Adam's object editor ║
║ Debug current object ║
║ Window object import ║
║ REGULAR CODE PROGRAM ║
╚══════════════════════╝
PRESS "C" for Create database file.
You should now see the CREATE DATABASE STRUCTURE screen on your
monitor. Enter the Field information as in our example below.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ CREATE DATABASE STRUCTURE ║
║ ║
║ ║
║ ║
║ FIELD TYPE LEN DEC ║
║ ═════════════╤══════╤═════╤══════ ║
║ NAME │ C │ 30 │ 0 ║
║ ADDRESS │ C │ 30 │ 0 ║
║ CITY │ C │ 21 │ 0 ║
║ ST │ C │ 2 │ 0 ║
║ ZIP │ C │ 5 │ 0 ║
║ PHONE │ C │ 14 │ 0 ║
║ MEMO │ M │ 10 │ 0 ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ Save Database Structure?(Y/N) Y ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "Ctrl-W" when you have entered all the field data.
Adam will now ask you if you want to save the new structure.
PRESS "Y" to save the structure to disk.
Adam will prompt you to enter a filename for your new database file.
ENTER "MAILLIST" for our sample program and press {enter}.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 13 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
Now we need to create an index file for our sample program.
PRESS "I" to Index database file.
╔═Utility Menu═════════╗═══════════════════════════════════════════════════════╗
║ Create database file ║ ║
║ Modify database file ║CTURE ║
║█Index database files█║ ║
║ Browse window design ║ ║
║ Lookup window design ║ ║
║ Pickup window design ║ ║
║ Editit window design ║ LEN DEC ║
║ Set values of F2 key ║╤═════╤══════ ║
║ Adam's object editor ║│ 30 │ 0 ║
║ Debug current object ║│ 30 │ 0 ║
║ Window object import ║│ 21 │ 0 ║
║ REGULAR CODE PROGRAM ║│ 2 │ 0 ║
╚══════════════════════╝│ 5 │ 0 ║
║ PHONE │ C │ 14 │ 0 ║
║ MEMO │ M │ 10 │ 0 ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ Save Database Structure?(Y/N) Y ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔═Utility Menu═════════╗═══════════════════════════════════════════════════════╗
║ Create database file ║ ║
║ Modify database file ║CTURE ║
║█Index database files█║ ║
║ Browse window design ║ ║
║ Lookup window design ║ ║
║ Pickup window design ║ ║
║ Editit window design ║ LEN DEC ║
║ Set values of F2 key ║╤═════╤══════ ║
╔═Select DBF════╗ditor ║│ 30 │ 0 ║
║█MAILLIST.DBF █║bject ║│ 30 │ 0 ║
╚═══════════════╝mport ║│ 21 │ 0 ║
║ REGULAR CODE PROGRAM ║│ 2 │ 0 ║
╚══════════════════════╝│ 5 │ 0 ║
║ PHONE │ C │ 14 │ 0 ║
║ MEMO │ M │ 10 │ 0 ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ Save Database Structure?(Y/N) Y ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Adam will ask you to select the database file to index.
PRESS "ENTER" to select the file we just created called MAILLIST.DBF
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 14 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
╔═Utility Menu═════════╗═══════════════════════════════════════════════════════╗
║ Create database file ║ ║
║ Modify database file ║CTURE ║
║█Index database files█║ ║
║ Browse window design ║ ║
║ Lookup window design ║ ║
║ Pickup window design ║ ║
║ Editit window design ║ LEN DEC ║
║ Set values of F2 key ║╤═════╤══════ ║
╔═Index on════╗ editor ║│ 30 │ 0 ║
║█NAME █║ object ║│ 30 │ 0 ║
║ ADDRESS ║ import ║│ 21 │ 0 ║
║ CITY ║PROGRAM ║│ 2 │ 0 ║
║ ST ║════════╝│ 5 │ 0 ║
║ ZIP ║ │ C │ 14 │ 0 ║
║ PHONE ║ │ M │ 10 │ 0 ║
║ MEMO ║ │ │ │ ║
╚═════════════╝ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ Save Database Structure?(Y/N) Y ║
╔══════════════════════════════════════════════════════════════════════════════╗
║ INDEX ON ║
╚══════════════════════════════════════════════════════════════════════════════╝
Now select the field called "NAME" which will be the field we want
to create our index on.
PRESS "ENTER" to select the field called "NAME", and then press ESC.
ENTER "NAME" for the name of our INDEX FILE, and press {enter}.
╔═Utility Menu═════════╗═══════════════════════════════════════════════════════╗
║ Create database file ║ ║
║ Modify database file ║CTURE ║
║█Index database files█║ ║
║ Browse window design ║ ║
║ Lookup window design ║ ║
║ Pickup window design ║ ║
║ Editit window design ║ LEN DEC ║
║ Set values of F2 key ║╤═════╤══════ ║
║ Adam's object editor ║│ 30 │ 0 ║
║ Debug current object ║│ 30 │ 0 ║
║ Window object import ║│ 21 │ 0 ║
║ REGULAR CODE PROGRAM ║│ 2 │ 0 ║
╚══════════════════════╝│ 5 │ 0 ║
║ PHONE │ C │ 14 │ 0 ║
║ MEMO │ M │ 10 │ 0 ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ ║
║ │ │ │ Save Database Structure?(Y/N) Y ║
╔═Enter index file name════════════════════════════════════════════════════════╗
║ INDEX ON NAME TO NAME ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 15 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
PRESS "ESC" twice to return to the main menu.
Before we go any further in Adam, we should exit Adam at this point,
and create our report format and label format file. Remember to call
them "MAILLIST.FRM" and "MAILLIST.LBL".
╔═══════════════════╗ Now we are ready to create our title screen for our
║ ║ masterpiece. You should see a window like the one
║ ║ shown below, in the top left corner of your screen,
║ ║ after pressing the letter 'S' for size.
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚═══════════════════╝
PRESS "S" to SIZE our window.
PRESS "SHIFT-RIGHT ARROW" to stretch the window to the right.
PRESS "SHIFT-DOWN ARROW" to stretch the window to the bottom.
PRESS "UP ARROW" one time to decrease our window size by one line.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" to return to the main menu.
PRESS "B" to change the background color to BLUE.
PRESS "T" to enter the TEXT mode.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 16 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
Enter the title for your program like the example shown below.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ║
║ ║
║ NOTE: You can record keyboard macros using the 'F2' key from the utility ║
║ menu. The SET KEY function will allow you to enter text characters ║
║ which can be played back while in TEXT mode by pressing the F2 key ║
║ ║
║ You can also press 'ALT/F2' while in TEXT mode to popup an 'ASCII' ║
║ lookup window. Select any character from ( 32-254 ) and then press ║
║ the 'F2' key to repeat the character. If you press ESC the F2 key ║
║ will be left unchanged. ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╔═Object═════Description══════════════════════════════Startup════Quit══════════╗
║ START title screen ██████████ ██████████ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "CTRL-W" to exit the TEXT mode.
PRESS "C" to save. Now enter the filename for our program "SAMPLE".
ENTER "START" in upper case for our object name, and press "ENTER".
ENTER "title screen" for our description and press "PgDn" to save.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 17 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
Now we are ready to create our first MENU window.
PRESS "M" to move the menu window under our title.
╔═══════════════════╗══════════════════════════════════════════════════════════╗
║ ____ ____ ___ __║ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ ║█ █__ █ █ █__ ║
║ █___ █ █ █ █ █_║█ █ _█_ █___ █___ ║
║___________________║__________________________________________________________║
║ ║ ║
║ ║ ║
║ ║ ║
║ ║ ║
║ ║ ║
╚═══════════════════╝ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ╚═══════════════════╝ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Use the arrow keys to position the MENU window as shown above.
PRESS "ENTER" to return to the main menu.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 18 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ║
║ ║ Add ║ ║
║ ║ Edit/View ║ ║
║ ║ Mailmerge Letters ║ ║
║ ║ Reports ║ ║
║ ║ Labels ║ ║
║ ║ Utilities ║ ║
║ ║ Quit ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ╚═══════════════════╝ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "T" to enter our menu options.
PRESS "CTRL-W" to return to the main menu.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ║
║ ║ Add ║ ║
║ ║ Edit/View ║ ║
║ ║ Mailmerge Letters ║ ║
║ ║ Reports ║ ║
║ ║ Labels ║ ║
║ ║ Utilities ║ ║
║ ║ Quit ║ ║
║ ╚═══════════════════╝ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "S" to size our menu, and press the up arrow key twice.
PRESS "ENTER" to return to the main menu.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 19 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
Now we're ready to add the procedure objects to our menu options.
PRESS "P" from the main menu.
ENTER "DO EDIT" for our first menu option.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Add═══════════════════════════════════════════════════════════════════════════╗
║DO EDIT ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "PgDn" to move to our next menu option.
ENTER "DO LOOK" for our EDIT/VIEW menu option, and "PgDn" to continue.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Edit/View═════════════════════════════════════════════════════════════════════╗
║DO LOOK ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 20 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
PRESS "F1" to select the LETTERS.OBJ from our object library.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Mailmerge Letters═════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ╔═Objects════════╗
║ ║ ADAMLIBA.OBJ √ ║
║ ║ TABLE.OBJ ║
║ ║ REPORT.OBJ ║
║ ║ PRINTER.OBJ ║
║ ║ PACKFILE.OBJ ║
║ ║ LABELS.OBJ ║
║ ║ INVOICE.OBJ ║
║ ║ USERHELP.OBJ ║
║ ║ POPCAL.OBJ ║
║ ║ DCODE.OBJ ║
║ ║█LETTERS.OBJ √█║
║ ║ BACKUP.OBJ ║
║ ║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Mailmerge Letters═════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
╔═Datafile DBF══╗ ╔═Objects════════╗
║█MAILLIST.DBF █║ ║ ADAMLIBA.OBJ √ ║
╚═══════════════╝ ║ TABLE.OBJ ║
║ ║ REPORT.OBJ ║
║ ║ PRINTER.OBJ ║
║ ║ PACKFILE.OBJ ║
║ ║ LABELS.OBJ ║
║ ║ INVOICE.OBJ ║
║ ║ USERHELP.OBJ ║
║ ║ POPCAL.OBJ ║
║ ║ DCODE.OBJ ║
║ ║█LETTERS.OBJ √█║
║ ║ BACKUP.OBJ ║
║ ║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
PRESS "ENTER" to select our maillist.dbf file.
PRESS "ENTER" again to select the "NAME" index file.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 21 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
Adam will ask us if we want to place any filter conditions over the
records. For our example we won't need any filter.
PRESS "ENTER" to skip this question.
╔Enter Filter Condition For Letters════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
You should see the following parameters inserted automatically into
the mailmerge menu option.
╔Mailmerge Letters═════════════════════════════════════════════════════════════╗
║DO letters WITH "MAILLIST","NAME","" ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
PRESS "PgDn" to move on to the REPORTS menu option.
PRESS "F1" to access our library objects.
PRESS "R" to move to the REPORT.OBJ
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Reports═══════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ╔═Objects════════╗
║ ║ ADAMLIBA.OBJ √ ║
║ ║ TABLE.OBJ ║
║ ║█REPORT.OBJ █║
║ ║ PRINTER.OBJ ║
║ ║ PACKFILE.OBJ ║
║ ║ LABELS.OBJ ║
║ ║ INVOICE.OBJ ║
║ ║ USERHELP.OBJ ║
║ ║ POPCAL.OBJ ║
║ ║ DCODE.OBJ ║
║ ║ LETTERS.OBJ √ ║
║ ║ BACKUP.OBJ ║
║ ║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
PRESS "ENTER" to select the REPORT object.
Most of Adam's menus allow you to press the first letter of the item
to select that option. This won't work if some of your object files
start with the same letter.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 22 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" to select the database to use for your report.
In our example there should only be one database file to choose from
the MAILLIST.DBF.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Reports═══════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
╔═Report DBF════╗ ╔═Objects════════╗
║█MAILLIST.DBF █║ ║ ADAMLIBA.OBJ √ ║
╚═══════════════╝ ║ TABLE.OBJ ║
║ ║█REPORT.OBJ █║
║ ║ PRINTER.OBJ ║
║ ║ PACKFILE.OBJ ║
║ ║ LABELS.OBJ ║
║ ║ INVOICE.OBJ ║
║ ║ USERHELP.OBJ ║
║ ║ POPCAL.OBJ ║
║ ║ DCODE.OBJ ║
║ ║ LETTERS.OBJ √ ║
║ ║ BACKUP.OBJ ║
║ ║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Reports═══════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
╔═Select one════╗ ╔═Objects════════╗
║█NAME.NTX █║ ║ ADAMLIBA.OBJ √ ║
╚═══════════════╝ ║ TABLE.OBJ ║
║ ║█REPORT.OBJ █║
║ ║ PRINTER.OBJ ║
║ ║ PACKFILE.OBJ ║
║ ║ LABELS.OBJ ║
║ ║ INVOICE.OBJ ║
║ ║ USERHELP.OBJ ║
║ ║ POPCAL.OBJ ║
║ ║ DCODE.OBJ ║
║ ║ LETTERS.OBJ √ ║
║ ║ BACKUP.OBJ ║
║ ║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
PRESS "ENTER" to select our NAME index file.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 23 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
PRESS "ENTER" again to select the report format file MAILLIST.FRM.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Reports═══════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
╔═Format File═══╗ ╔═Objects════════╗
║█MAILLIST.FRM █║ ║ ADAMLIBA.OBJ √ ║
╚═══════════════╝ ║ TABLE.OBJ ║
║ ║█REPORT.OBJ █║
║ ║ PRINTER.OBJ ║
║ ║ PACKFILE.OBJ ║
║ ║ LABELS.OBJ ║
║ ║ INVOICE.OBJ ║
║ ║ USERHELP.OBJ ║
║ ║ POPCAL.OBJ ║
║ ║ DCODE.OBJ ║
║ ║ LETTERS.OBJ √ ║
║ ║ BACKUP.OBJ ║
║ ║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
ENTER "CardFile Listing By Name" for our report heading.
╔Enter Report Heading══════════════════════════════════════════════════════════╗
║CardFile Listing By Name ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" to skip the filter condition question.
╔Enter Filter Condition For Report═════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
The following parameter line will automatically be inserted into the
report procedure line.
╔Reports═══════════════════════════════════════════════════════════════════════╗
║DO report WITH "MAILLIST","NAME","MAILLIST.FRM","CardFile Listing By Name","" ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
PRESS "PgDn" to advance to the next menu option.
Now we are ready to attach our LABELS object to our main menu. This
is done the same way we did the REPORT object. You must be ready to
try this one by yourself. If you need help refer back to reports.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 24 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
If you've done your homework, you should see the following screen on
your monitor.
╔Labels════════════════════════════════════════════════════════════════════════╗
║DO labels WITH "MAILLIST","NAME","MAILLIST.LBL","" ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
PRESS "PgDn" to move to the next menu option.
This option will call our utility menu.
ENTER "DO UTIL"
PRESS "PgDn" to move to our last menu option.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Utilities═════════════════════════════════════════════════════════════════════╗
║DO UTIL ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
ENTER "EXIT" for our last menu option.
PRESS "CTRL-W" to return to Adam's main menu.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Quit══════════════════════════════════════════════════════════════════════════╗
║EXIT ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "B" four times to change the menu color to RED.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 25 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔══════════════════════════════════════════════════════════════════════════════╗
║ Add Edit/View Mailmerge Letters Reports Labels Utilities Quit ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔═Help Message═════════════════════════════════════════════════════════════════╗
║ Add name to Card File. ║
║ Edit/View Card File. ║
║ Create/print mailmerge letters. ║
║ Print card file report. ║
║ Print mailing labels. ║
║ Utility menu. ║
║ Exit to dos. ║
╚══════════════════════════════════════════════════════════════════════════════╝
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "H" to add help messages to your menu.
PRESS "CTRL-W" to return to the menu.
PRESS "C" to save our first MENU window.
ENTER "MENU" for the object name, and "menu window" for the description.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ║
║ ║ Add ║ ║
║ ║ Edit/View ║ ║
║ ║ Mailmerge Letters ║ ║
║ ║ Reports ║ ║
║ ║ Labels ║ ║
║ ║ Utilities ║ ║
║ ║ Quit ║ ║
║ ╚═══════════════════╝ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╔═Object═════Description══════════════════════════════Startup════Quit══════════╗
║ MENU menu window ██████████ ██████████ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 26 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
Now we can design our LOOKUP window for our program. This window will
display a list of names from our MAILLIST database.
We can scroll up and down through the list to select a name, then we
can press ENTER to pull up our cardfile record and view the complete
record at one time.
PRESS "U" from the main menu to call up our utility menu.
PRESS "L" to select the LOOKUP WINDOW DESIGN option.
╔═Utility Menu═════════╗═══════════════════════════════════════════════════════╗
║ Create database file ║___ ___ _ ____ ║
║ Modify database file ║__ █ █ █__ ║
║ Index database files ║ _█_ █___ █___ ║
║ Browse window design ║_______________________________________________________║
║█Lookup window design█║ ║
║ Pickup window design ║ ║
║ Editit window design ║ ║
║ Set values of F2 key ║ ║
║ Adam's object editor ║ ║
║ Debug current object ║ ║
║ Window object import ║ ║
║ REGULAR CODE PROGRAM ║ ║
╚══════════════════════╝ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Adam will prompt you to select the database we want to use for our
lookup window.
PRESS "ENTER" to select "MAILLIST.DBF".
Next we are asked to select the index files to use for our lookup.
PRESS "ENTER" to select "NAME.NTX".
Adam will display a list of all the fields in our MAILLIST database,
we can use the arrow keys to scroll up and down the list. Each time
we select a field from the list, the color will change and the items
that we have selected will become inactive.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 27 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔═Utility Menu═════════╗═══════════════════════════════════════════════════════╗
║ Create database file ║___ ___ _ ____ ║
║ Modify database file ║__ █ █ █__ ║
║ Index database files ║ _█_ █___ █___ ║
║ Browse window design ║_______________________________________________________║
║█Lookup window design█║ ║
║ Pickup window design ║ ║
║ Editit window design ║ ║
║ Set values of F2 key ║ ║
╔═Field List══╗ editor ║ ║
║█NAME █║ object ║ ║
║ ADDRESS ║ import ║ ║
║ CITY ║PROGRAM ║ ║
║ ST ║════════╝ ║
║ ZIP ║ ║
║ PHONE ║ ║
║ MEMO ║ ║
╚═════════════╝ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" to select the "NAME" field.
PRESS "ESC" to stop selecting fields.
Adam will ask us for the name of a procedure we want to call when we
press ENTER while on this field.
ENTER "EDIT" for the name of the window object to call, and press ENTER
╔Procedure to call before read═════════════════════════════════════════════════╗
║EDIT ║
╚══════════════════════════════════════════════════════════════════════════════╝
ENTER "CardFile Lookup" for the title of our lookup window.
PRESS "ENTER" when done.
╔Enter Title For LOOKUP Object═════════════════════════════════════════════════╗
║CardFile Lookup ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" to skip the filter question.
╔Enter Filter Condition════════════════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "P" to tell Adam we want this lookup to be written as a procedure.
╔Write LOOKUP as Procedure or Function?════════════════════════════════════════╗
║P ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 28 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
╔═CardFile Lookup════════════════╗═════════════════════════════════════════════╗
║ NAME ║ ____ ║
║════════════════════════════════║ █__ ║
║ ██████████████████████████████ ║__ █___ ║
║ ██████████████████████████████ ║_____________________________________________║
║ ██████████████████████████████ ║ ║
║ ██████████████████████████████ ║ MOVE ║
║ ██████████████████████████████ ║ SIZE ║
║ ██████████████████████████████ ║ TEXT ║
║ ██████████████████████████████ ║ CODE ║
╚════════════════════════════════╝ WT-2 ║
║ ║ Labels ║ FORE ║
║ ║ Utilities ║ BACK ║
║ ║ Quit ║ HELP ║
║ ╚═══════════════════╝ PLIB ║
║ NOTE ║
║ EDIT ║
║ UTIL ║
║ QUIT ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
You should see your lookup window in the top left corner of your
screen.
PRESS "M" to move your lookup window to the right side of the main menu
PRESS "ENTER" to return to the main menu.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ╔════════════════════════════════╗ ║
║ ║ Add ║ ║ ║ ║
║ ║ Edit/View ║ ║ ║ ║
║ ║ Mailmerge Letters ║ ║ ║ ║
║ ║ Reports ║ ║ ║ ║
║ ║ Labels ║ ║ ║ ║
║ ║ Utilities ║ ║ ║ ║
║ ║ Quit ║ ║ ║ ║
║ ╚═══════════════════╝ ║ ║ ║
║ ║ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 29 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ╔════════════════════════════════╗ ║
║ ║ Add ║ ║ NAME ║ ║
║ ║ Edit/View ║ ║════════════════════════════════║ ║
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████████████████████████ ║ ║
║ ╚═══════════════════╝ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ╔═CardFile Lookup════════════════╗ ║
║ ║ Add ║ ║ NAME ║ ║
║ ║ Edit/View ║ ║════════════════════════════════║ ║
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████████████████████████ ║ ║
║ ╚═══════════════════╝ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
╔═Object═════Description═══════════════════════════════════════════════════════╗
║ LOOK lookup window ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "C" to save the lookup window.
ENTER "LOOK" for the object name.
ENTER "lookup window" for the object description.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 30 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
Now we are ready to create our EDIT window. This window is called by
the ADD option from the main menu and by the LOOKUP window when the
enter key is pressed.
PRESS "S" to size our edit window.
╔═══════════════════╗══════════════════════════════════════════════════════════╗
║ ║ ____ ___ _ ____ ║
║ ║█ █__ █ █ █__ ║
║ ║█ █ _█_ █___ █___ ║
║ ║__________________________________________________________║
║ ║ ║
║ ║══╗ ╔═CardFile Lookup════════════════╗ ║
║ ║ ║ ║ NAME ║ ║
║ ║ ║ ║════════════════════════════════║ ║
║ ║s ║ ║ ██████████████████████████████ ║ ║
╚═══════════════════╝ ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████████████████████████ ║ ║
║ ╚═══════════════════╝ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "SHIFT-RIGHT ARROW" to stretch the window to the right.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████████████████████████ ║ ║
║ ╚═══════════════════╝ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 31 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
PRESS "B" eight times to change our edit window color to BLACK.
PRESS "U" for the UTILITY MENU.
╔═Utility Menu═════════╗═══════════════════════════════════════════════════════╗
║ Create database file ║___ ___ _ ____ ║
║ Modify database file ║__ █ █ █__ ║
║ Index database files ║ _█_ █___ █___ ║
║ Browse window design ║_______________________________________________________║
║ Lookup window design ║ ║
║ Pickup window design ║ ╔═CardFile Lookup════════════════╗ ║
║█Editit window design█║ ║ NAME ║ ║
║ Set values of F2 key ║ ║════════════════════════════════║ ║
║ Adam's object editor ║ ║ ██████████████████████████████ ║ ║
║ Debug current object ║ ║ ██████████████████████████████ ║ ║
║ Window object import ║ ║ ██████████████████████████████ ║ ║
║ REGULAR CODE PROGRAM ║ ║ ██████████████████████████████ ║ ║
╚══════════════════════╝ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "E" to select the EDIT WINDOW DESIGN option.
PRESS "ENTER" to select our example database.
PRESS "ENTER" to select the NAME index file.
PRESS "ESC" to tell Adam we do not want to select any other index files
PRESS "E" to tell Adam to write this window object as an EDIT window.
╔Write EDIT window or SAYS/GETS window?(E/SG)══════════════════════════════════╗
║E ║
╚══════════════════════════════════════════════════════════════════════════════╝
ENTER "CardFile Window" for the title of our edit window.
╔Enter title for edit window═══════════════════════════════════════════════════╗
║CardFile Window ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" twice for no initialize or calculation procedures.
╔Enter initialize procedure name═══════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Enter calculation procedure name══════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 32 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
PRESS "Y" to place the edit window commands on the bottom of the screen
╔Place editing commands at bottom of screen?(Y/N)══════════════════════════════╗
║Y ║
╚══════════════════════════════════════════════════════════════════════════════╝
Now we are ready to place our fields in our EDIT window.
PRESS "ENTER" to select the first field called "NAME".
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╔═Put Field═══╗ ║
║█NAME █║════════════════════════════════════════════════════════════════╝
║ ADDRESS ║ ║ ║ ██████████████████████████████ ║ ║
║ CITY ║ ║ ║ ██████████████████████████████ ║ ║
║ ST ║ ║ ║ ██████████████████████████████ ║ ║
║ ZIP ║════════╝ ║ ██████████████████████████████ ║ ║
║ PHONE ║ ║ ██████████████████████████████ ║ ║
║ MEMO ║ ║ ██████████████████████████████ ║ ║
╚═════════════╝ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Adam will place the field in the top right corner of our window. The
NAME field is already in the correct position.
PRESS "ENTER" to drop the "NAME" field.
╔══════════════════════════════════════════════════════════════════════════════╗
║ NAME ║
║ ██████████████████████████████ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 33 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔══════════════════════════════════════════════════════════════════════════════╗
║ NAME ║
║ ██████████████████████████████ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Adam will prompt us to enter a picture template for the current field
and a valid clause. The only field that will need a picture template
for our example program is "PHONE". We can use "1-999-999-9999" when
we select the PHONE field.
PRESS "ENTER" twice to skip the picture and valid prompts.
╔Enter picture template════════════════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Enter valid clause════════════════════════════════════════════════════════════╗
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Continue getting fields and placing them in your window until all the
fields have been selected.
The last field which is our MEMO field will automatically get a valid
clause, which calls one of our built in functions in the ADAMLIB.OBJ
file.
When you have selected all the fields from the database, your screen
should look something like the one shown below.
╔══════════════════════════════════════════════════════════════════════════════╗
║ NAME ║
║ ██████████████████████████████ ║
║ ADDRESS ║
║ ██████████████████████████████ ║
║ CITY ST ZIP ║
║ █████████████████████ ██ █████ ║
║ PHONE MEMO ║
║ ██████████████ ████ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ESC" to exit the utility menu.
PRESS "S" from the main menu to size our edit window.
When you have finished sizing the window it should look like the one
on the next page.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 34 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
╔═════════════════════════════════════╗════════════════════════════════════════╗
║ NAME ║__ ║
║ ██████████████████████████████ ║_ ║
║ ADDRESS ║__ ║
║ ██████████████████████████████ ║________________________________________║
║ CITY ST ZIP ║ ║
║ █████████████████████ ██ █████ ║okup════════════════╗ ║
║ PHONE MEMO ║ ║ ║
║ ██████████████ ████ ║════════════════════║ ║
╚═════════════════════════════════════╝███████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████████████████████████ ║ ║
║ ╚═══════════════════╝ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ║ ██████████████████████████████ ║ ║
║ ╚════════════════════════════════╝ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" to return to the main menu.
PRESS "M" to position the EDIT window in the bottom right corner.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ╔═CardFile Lookup════════════════╗ ║
║ ║ Add ║ ║ NAME ║ ║
║ ║ Edit/View ║ ║════════════════════════════════║ ║
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████╔═════════════════════════════════════╗ ║
║ ╚═══════════════════╝ ║ ██████████║ NAME ║ ║
║ ║ ██████████║ ██████████████████████████████ ║ ║
║ ║ ██████████║ ADDRESS ║ ║
║ ║ ██████████║ ██████████████████████████████ ║ ║
║ ║ ██████████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
║ ╚═════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "ENTER" to return to the main menu.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 35 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ╔═CardFile Lookup════════════════╗ ║
║ ║ Add ║ ║ NAME ║ ║
║ ║ Edit/View ║ ║════════════════════════════════║ ║
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████╔═CardFile Window═════════════════════╗ ║
║ ╚═══════════════════╝ ║ ██████████║ NAME ║ ║
║ ║ ██████████║ ██████████████████████████████ ║ ║
║ ║ ██████████║ ADDRESS ║ ║
║ ║ ██████████║ ██████████████████████████████ ║ ║
║ ║ ██████████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
╔═Object═════Description═══════════════════════════════════════════════════════╗
║ EDIT edit window ║
╚══════════════════════════════════════════════════════════════════════════════╝
PRESS "C" to save the EDIT window.
ENTER "EDIT" for the object name, and press ENTER.
ENTER "edit window" for the description, and press ENTER.
╔══════╗═══════════════════════════════════════════════════════════════════════╗
║ MOVE ║____ ___ ___ ____ ___ _ ____ ║
║ SIZE ║█__█ █__▌ █ █ █__ █ █ █__ ║
║ FORE ║█ █ █ █ █__█ █ _█_ █___ █___ ║
║ BACK ║_______________________________________________________________________║
╚══════╝ ║
║ ╔═══════════════════╗ ╔═CardFile Lookup════════════════╗ ║
║ ║ Add ║ ║ NAME ║ ║
║ ║ Edit/View ║ ║════════════════════════════════║ ║
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████╔═CardFile Window═════════════════════╗ ║
║ ╚═══════════════════╝ ║ ██████████║ NAME ║ ║
║ ║ ██████████║ ██████████████████████████████ ║ ║
║ ╔══════════════════════════════════════════════════════════════════════════╗ ║
║ ║ ║ ║
║ ║ THIS IS YOUR MEMO EDIT WINDOW. USE THE MINIATURE ADAM MENU TO SIZE ║ ║
║ ║ THE WINDOW AND POSITION IT ON THE SCREEN. YOU SHOULD KNOW HOW THE ║ ║
║ ║ COMMANDS IN ADAM WORK TO TRY THIS ON YOUR OWN... PRESS ESC TO EXIT ║ ║
║ ║ ║ ║
╔═║ ║═╗
║ ╚══════════════════════════════════════════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 36 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
Now you're ready to try doing the utility menu on your own. Follow
the example screens on the next pages, and see how easy it is.
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ╔═CardFile Lookup════════════════╗ ║
║ ║ Add ║ ║ NAME ║ ║
║ ║ Edit/View ║ ║════════════════════════════════║ ║
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═════════════════════╗ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ ║
║ ║ Printer Setup ║████║ ██████████████████████████████ ║ ║
║ ║ Calendar ║████║ ADDRESS ║ ║
║ ║ DosAccess ║████║ ██████████████████████████████ ║ ║
║ ╚══════════════════╝████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
║ ╚═════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Backup Card File══════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ╔═Objects════════╗
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║ ADAMLIBA.OBJ √ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║ TABLE.OBJ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║ REPORT.OBJ √ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═══════║ PRINTER.OBJ √ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ PACKFILE.OBJ ║
║ ║ Printer Setup ║████║ ██████████████████████║ LABELS.OBJ √ ║
║ ║ Calendar ║████║ ADDRESS ║ INVOICE.OBJ ║
║ ║ DosAccess ║████║ ██████████████████████║ USERHELP.OBJ ║
║ ╚══════════════════╝████║ CITY ║ POPCAL.OBJ ║
║ ║ ██████████║ █████████████████████ ║ DCODE.OBJ ║
║ ╚═══════════║ PHONE ║ LETTERS.OBJ √ ║
║ ║ ██████████████ ║█BACKUP.OBJ √█║
║ ╚═══════════════════════║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 37 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Backup Card File══════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
╔═Backup DBF════╗tters ║ ║ ██████████████████████████████ ║ ╔═Objects════════╗
║█MAILLIST.DBF █║ ║ ║ ██████████████████████████████ ║ ║ ADAMLIBA.OBJ √ ║
╚═══════════════╝ ║ ║ ██████████████████████████████ ║ ║ TABLE.OBJ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║ REPORT.OBJ √ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═══════║ PRINTER.OBJ √ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ PACKFILE.OBJ ║
║ ║ Printer Setup ║████║ ██████████████████████║ LABELS.OBJ √ ║
║ ║ Calendar ║████║ ADDRESS ║ INVOICE.OBJ ║
║ ║ DosAccess ║████║ ██████████████████████║ USERHELP.OBJ ║
║ ╚══════════════════╝████║ CITY ║ POPCAL.OBJ ║
║ ║ ██████████║ █████████████████████ ║ DCODE.OBJ ║
║ ╚═══════════║ PHONE ║ LETTERS.OBJ √ ║
║ ║ ██████████████ ║█BACKUP.OBJ √█║
║ ╚═══════════════════════║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Backup Card File══════════════════════════════════════════════════════════════╗
║DO backup WITH "MAILLIST","W+/BG " ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═════════════════════╗ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ ║
║ ║ Printer Setup ║████║ ██████████████████████████████ ║ ║
║ ║ Calendar ║████║ ADDRESS ║ ║
║ ║ DosAccess ║████║ ██████████████████████████████ ║ ║
║ ╚══════════════════╝████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
║ ╚═════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 38 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Printer Setup═════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ╔═Objects════════╗
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║ ADAMLIBA.OBJ √ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║ TABLE.OBJ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║ REPORT.OBJ √ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═══════║█PRINTER.OBJ √█║
║ ╚══════════║ Backup Card File ║████║ NAME ║ PACKFILE.OBJ ║
║ ║ Printer Setup ║████║ ██████████████████████║ LABELS.OBJ √ ║
║ ║ Calendar ║████║ ADDRESS ║ INVOICE.OBJ ║
║ ║ DosAccess ║████║ ██████████████████████║ USERHELP.OBJ ║
║ ╚══════════════════╝████║ CITY ║ POPCAL.OBJ ║
║ ║ ██████████║ █████████████████████ ║ DCODE.OBJ ║
║ ╚═══════════║ PHONE ║ LETTERS.OBJ √ ║
║ ║ ██████████████ ║ BACKUP.OBJ √ ║
║ ╚═══════════════════════║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Printer Setup═════════════════════════════════════════════════════════════════╗
║DO printer ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═════════════════════╗ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ ║
║ ║ Printer Setup ║████║ ██████████████████████████████ ║ ║
║ ║ Calendar ║████║ ADDRESS ║ ║
║ ║ DosAccess ║████║ ██████████████████████████████ ║ ║
║ ╚══════════════════╝████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
║ ╚═════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 39 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Calendar══════════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ╔═Objects════════╗
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║ ADAMLIBA.OBJ √ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║ TABLE.OBJ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║ REPORT.OBJ √ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═══════║ PRINTER.OBJ √ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ PACKFILE.OBJ ║
║ ║ Printer Setup ║████║ ██████████████████████║ LABELS.OBJ √ ║
║ ║ Calendar ║████║ ADDRESS ║ INVOICE.OBJ ║
║ ║ DosAccess ║████║ ██████████████████████║ USERHELP.OBJ ║
║ ╚══════════════════╝████║ CITY ║█POPCAL.OBJ █║
║ ║ ██████████║ █████████████████████ ║ DCODE.OBJ ║
║ ╚═══════════║ PHONE ║ LETTERS.OBJ √ ║
║ ║ ██████████████ ║ BACKUP.OBJ √ ║
║ ╚═══════════════════════║ MULTUSER.OBJ √ ║
╚═════════════════════════════════════════════════════════════║ ADAMLIBB.OBJ √ ║
╚════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Calendar══════════════════════════════════════════════════════════════════════╗
║DO popcal ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═════════════════════╗ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ ║
║ ║ Printer Setup ║████║ ██████████████████████████████ ║ ║
║ ║ Calendar ║████║ ADDRESS ║ ║
║ ║ DosAccess ║████║ ██████████████████████████████ ║ ║
║ ╚══════════════════╝████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
║ ╚═════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 40 ║ │║ SAMPLE PROGRAM ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔DosAccess═════════════════════════════════════════════════════════════════════╗
║DO dos ║
║ ║
║ ║
║ ║
╚═══Procedure Library - Press F1 For Object Library - Press Ctrl/W To Exit═════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═════════════════════╗ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ ║
║ ║ Printer Setup ║████║ ██████████████████████████████ ║ ║
║ ║ Calendar ║████║ ADDRESS ║ ║
║ ║ DosAccess ║████║ ██████████████████████████████ ║ ║
║ ╚══════════════════╝████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
║ ╚═════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════╗
║ Backup Card File Printer Setup Calendar DosAccess ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔═Help Message═════════════════════════════════════════════════════════════════╗
║ Backup card file database. ║
║ Setup print codes. ║
║ Popup calendar ║
║ Exit to dos ║
╚══════════════════════════════════════════════════════════════════════════════╝
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ║ ║ ██████████╔═CardFile Window═════════════════════╗ ║
║ ╚═══════════════════╝ ║ ██████████║ NAME ║ ║
║ ║ ██████████║ ██████████████████████████████ ║ ║
║ ║ ██████████║ ADDRESS ║ ║
║ ║ ██████████║ ██████████████████████████████ ║ ║
║ ║ ██████████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
║ ╚═════════════════════════════════════╝ ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ SAMPLE PROGRAM ║ ║ 41 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
╔══════════════════════════════════════════════════════════════════════════════╗
║ ____ ____ ___ ___ ____ ___ _ ____ ║
║ █ █__█ █__▌ █ █ █__ █ █ █__ ║
║ █___ █ █ █ █ █__█ █ _█_ █___ █___ ║
║______________________________________________________________________________║
║ ║
║ ╔═══════════════════╗ ╔═CardFile Lookup════════════════╗ ║
║ ║ Add ║ ║ NAME ║ ║
║ ║ Edit/View ║ ║════════════════════════════════║ ║
║ ║ Mailmerge Letters ║ ║ ██████████████████████████████ ║ ║
║ ║ Reports ║ ║ ██████████████████████████████ ║ ║
║ ║ Labels ║ ║ ██████████████████████████████ ║ ║
║ ║ Utilities ║ ║ ██████████████████████████████ ║ ║
║ ║ Quit ╔══════════════════╗████╔═CardFile Window═════════════════════╗ ║
║ ╚══════════║ Backup Card File ║████║ NAME ║ ║
║ ║ Printer Setup ║████║ ██████████████████████████████ ║ ║
║ ║ Calendar ║████║ ADDRESS ║ ║
║ ║ DosAccess ║████║ ██████████████████████████████ ║ ║
║ ╚══════════════════╝████║ CITY ST ZIP ║ ║
║ ║ ██████████║ █████████████████████ ██ █████ ║ ║
║ ╚═══════════║ PHONE MEMO ║ ║
║ ║ ██████████████ ████ ║ ║
╔═Object═════Description═══════════════════════════════════════════════════════╗
║ UTIL utility menu ║
╚══════════════════════════════════════════════════════════════════════════════╝
If you made it this far you have a pretty good understanding of how
ADAM works. Keep experimenting with ADAM you'll be surprised at the
different type of programs that ADAM can generate.
Adam's capabilities go far beyond what we can show in this sample
program. It is powerful enough to create complete invoicing systems
using multiple database files.
Anything that can be hand written by a professional programmer can
be done with Adam, only faster! All there is left to do, is to let
Adam write your program for you.
PRESS "Q" to exit Adam.
PRESS "Y" to generate the program file.
ENTER "your name here" for the author, after all you did help a little
╔Write program file(Y/N)?══════════════════════════════════════════════════════╗
║Y ║
╚══════════════════════════════════════════════════════════════════════════════╝
╔Enter Author(s) Name══════════════════════════════════════════════════════════╗
║Your Name Here ║
╚══════════════════════════════════════════════════════════════════════════════╝
Now just sit back and watch Adam work!
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 42 ║ │║ ANIMATION ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
Animation is accomplished by creating a TEXT window object and in-
serting a graphic drawing inside the window, then saving the shape
and going back into text mode to alter the drawing or move it just
slightly and re-saving the image again.
Most of your animation sequences will require at least three draw-
ings or moves, perhaps even more to achieve the correct results.
To better understand how to use Adam to produce your animation you
should think of the process using the following steps as a guide.
1. Your going to draw a picture that you want to animate inside of
a TEXT object.
2. Take a picture of the object using the F1 camera key. Remember
that only the graphics inside the window are saved in a picture
frame, not the window boarder.
3. Next you will go back into TEXT mode, move or change the image
and take another picture.
4. After you have completed all the frames in your animation, you
can use the VIEW command to see how your animated picture looks
as it actually runs. Press any key to stop the animation and to
return to the menu.
5. Now use the SAVE command to save the animation sequences to the
disk as a program. You can also save your original image of the
graphics using the regular CODE command from Adams main menu.
Think of the F1 key and ENTER key as the shutter release button on
a camera. The camera in Adam is very similar to a real camera. You
can TAKE a picture, LOAD a new roll of film and SAVE or develop it
when ever you want.
╔════════════════════════════════════════════════════════════════╗
║ Take View Save Load Quit ║
╚════════════════════════════════════════════════════════════════╝
This is the camera menu you will see each time you press the 'F1'
key while at Adams main menu. The cursor defaults to the 'TAKE' a
picture command.
The first time you take any pictures, Adam will calculate how many
pictures you can take for the size of the window object you are in
currently.
How many pictures you can take with a roll of film, will vary with
the object size. A one line frame capture will allow you about 200
pictures per roll of film. A full screen image only allows about
eight pictures to a roll.
Each time you select the LOAD film command, Adam will check first
to see if you have any pictures that are in the camera which have
not been developed. If there are any pictures that are used, Adam
will warn you first, before loading a new roll of film.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ ANIMATION ║ ║ 43 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
When you save the pictures, Adam creates an animation file with a
.PRG extension. This file can now be called from inside your Adam
program using the following syntax.
Lets say for example that you have created a title screen for your
program and this screen will call our animation file, after it has
displayed our title. We use the following command entered in the
QUIT position when we save our title screen.
ACT_1 WITH 0,13
The command entered above assumes that we saved our animation file
with the name 'ACT_1'.
Adam provides the 'DO' part of the command automatically. The next
parameters tell the animation program to keep running until 'ENTER
is pressed.
The first parameter controls a timer for the animation. A value of
5 will keep the animation sequence running for about one second or
a value of 50 for about 10 seconds of animation.
You can use both the timer and keystroke at the same time. This is
the same as saying, run for 10 seconds or until the 'ENTER' key is
pressed, which ever comes first.
The keystroke values are the same as the normal INKEY() values for
the keyboard. Below is an example of an animation sequence that
will display a marque type effect.
╔═══════════════════════════════════════════════════════════════╗
║* * * * * * * * * * * * * * * * * * * * * ║
╚═══════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════╗
║ * * * * * * * * * * * * * * * * * * * * * ║
╚═══════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════╗
║ * * * * * * * * * * * * * * * * * * * * *║
╚═══════════════════════════════════════════════════════════════╝
This type of animation requires only three pictures to create just
the effect we want.
Animation and special effects are really beyond the scope of this
manual. There are many good books available on the subject of ani-
mation and computer graphics. At first glance it appears that with
the graphics characters in the IBM computer, it would be very hard
to create any type of animation. But it just takes a little bit of
imagination and you'll be an expert in no time!
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 44 ║ │║ IMPORTING OBJECTS ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
The ability to import objects from another program is one of Adams
most powerful features. This makes it possible to spend more time
on designing your original objects, knowing that you will be able
to re-use the object in more than one program.
For example, lets say you have created this fantastic title screen
with your company logo, sound and animation. Now by importing this
object you can use it in as many programs as you want to.
The basic principle behind importing objects is simple. While you
are working in the current Adam data driver file, you can press 'U
for the UTILity menu and then 'W' for WINDOW OBJECT IMPORT.
Adam temporarily suspends the operation in the original file, and
lets you select another data file to open, displays the objects in
the new file and lets you grab an existing object.
After you have selected an object, Adam closes the data file and
re-opens the original file, appending the new object to the end of
the current driver file.
Now you can size the object, change colors or use it the way it is
in your new program. After needing to use this feature just once
you will wonder how we got along without it in version 2.0.
Objects can even be imported from the current object that you are
in. This provides a method to duplicate objects if needed.
When importing objects, the object retains all the attributes and
name of the original object.
The ability to import objects opens up all kinds of new ideas with
Adam. For example: Picture library's, animation library's and even
a file containing pre-designed objects and menus.
One of the best features of working with Adam is the freedom to do
whatever you're imagination desires. There is an Adam developer in
San Antonio, TX. who uses Adam just to create prototypes to show
his customers, before he actually starts the job. He claims that
Adam is the fastest demo system that exists.
Another user in Scottsdale, assembles turbo basic programs from an
object library that contains all the basic routines for his appli-
cations.
Once you understand the basic concept behind Adam, the output is
only limited by your imagination. Adam lets you decide how you are
going to use it, as just a screen design tool, a demo system or as
a complete program development system. You'll be hard pressed to
find a system that is faster or easier to use...
Just remember that the objects you design with Adam are like parts
that when combined or clued together in Adam, become a completely
new and larger object containing smaller objects for its parts.
Think of Adam as a set of blocks for building a log cabin, only in
Adam you can design the shape of the blocks, thereby changing the
log cabin into a high rise building!
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ FONT LIBRARY ║ ║ 45 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
Adam contains a special file called 'ADAMFONT.FNT' which is just a
normal ASCII file. This file contains the different fonts that are
available in Adam.
The fonts can be accessed by pressing the F10 function key inside
the TEXT mode. Below is an example of the fonts that are already
available when you first receive Adam.
SAMPLE 3x3
┌─┐ ┌─┐ ┌─┐ ┬─┐ ┌── ┌── ┌─┐
├─┤ ├─┤ │ │ │ ├─ ├─ │─┐
┴ ┴ └─┘ └─┘ ┴─┘ └── ┴ └─┘
BOLD 3x4
▄▄▄▄ ▄▄▄▄ ▄▄▄▄ ▄▄▄_ ▄▄▄▄ ▄▄▄▄ ▄▄▄▄
█▄▄█ █▄▄█ █ █ █ █▄▄ █▄▄ █ ▄▄
█ █ █▄▄█ █▄▄▄ █▄▄█ █▄▄▄ █ █▄▄█
SHADOW 4x4
____ ____ ____ ___ ____ ____ ____
█│ █ █│ █ █│ █│ █ █│ █│ █│
█├─█ █├─█ █│ █│ █ █├─ █├─ █│─▄
█│ █ █│_█ █│__ █│_█ █│__ █│ █│_█
JUMBO 5x6
██████ ██████ ██████ █████ ██████ ██████ ██████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ██████ ██ ██ ██ ██████ ██████ ██ ███
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██████ ██████ ██████ ██ ██████
The format used is the name of the font followed by the height and
width of the font. On the next line after the font name is where
you actually layout your font design.
Font size can be as large as a 9x9 letter. The ability of Adam to
read the font is limited to the 26 upper case letters only. But if
you have to have both upper and lower case letters, you could make
one line of upper case letters and one line of lower case letters.
Both these lines could be related to the same font design. This is
one way to accomplish upper and lower case font styles.
Pressing the F10 key while in the TEXT mode will activate the font
library. Press the space bar to view the font styles, and 'ENTER'
key to select a font.
Once you have selected a font style, you will be prompted to enter
the text or message. When done press the enter key and the message
will be inserted into the TEXT window at the current cursor row.
Use the INSert key to position the letters inside the window. You
can also press the ESC key while in the size mode to center text.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 46 ║ │║ HOW TO CREATE OBJECTS ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
The Adam object library comes with a set of predefined objects you
can use immediately. Adam also contains two built-in SMART OBJECTS
that allow you to create browse, lookup, picklists and another one
that builds the custom edit window and gets procedures.
Most of these objects are used for everyday database handling type
of chores. One that deserves special attention is the file called
'CARDEX.OBJ' which allows you to include a cardfile with your app-
lications.
What makes the 'CARDEX' object unusual is that it was created with
Adam. This capability to create new objects is what makes Adam so
different from most systems that are using the so called latest in
template technologies.
This ability to take small library objects and combine them to be-
come larger objects or even complete stand alone programs will re-
invent software as we think of it today.
The way to create your own objects is by taking advantage of these
concepts in Adam. In creating the 'CARDEX' object we wanted it to
have the appearance of a real card file, and yet keep it as simple
and easy to use as possible.
Below is a list of the steps used to create 'CARDEX.OBJ':
1. Create database with fields NAME, ADDRESS, CITY, ST, ZIP and
PHONE.
2. Index the CARDEX database on field NAME to CARDEX.NTX
3. Create the title screen using the 'F7' , 'F8' keys to duplicate
the text background.
4. Create a menu containing EDIT, VIEW, PACK and QUIT options.
5. Design a custom edit window for adding and editing records.
6. Create a lookup window to view the records quickly with the key
index set to NAME, and the first field calling the EDIT window.
7. Attach the PACKFILE object to the PACK menu option.
8. Type EXIT in the QUIT menu option.
9. Press 'Q' to exit Adam and generate the program.
The only part that was modified by hand was to insert the follow-
ing call to an Adam library procedure to create the database file,
if it does not exist.
IF !FILE("CARDEX.DBF")
DO MAKEDBF WITH "CARDEX","NAME","CARDEX"
ENDIF
This is the way we take small objects, and combine them in Adam to
create a completely new object, that combined with other existing
objects will become our completely new program or utility.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ OBJECT FILES ║ ║ 47 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
Adam includes the following object files that are designed to fill
most of the requirements needed for maintaining a database.
ADAMLIBA OBJ 13896 11-25-89 12:39p
ADAMLIBB OBJ 13555 12-22-89 1:39p
BACKUP OBJ 1017 11-25-89 12:36p
CARDEX OBJ 6432 11-27-89 9:13a
DCODE OBJ 5572 11-25-89 12:39p
LABELS OBJ 2661 11-25-89 12:37p
LETTERS OBJ 7366 11-25-89 12:39p
MULTUSER OBJ 4524 11-25-89 1:12p
PACKFILE OBJ 1050 11-25-89 12:38p
POPCAL OBJ 6925 11-25-89 1:11p
PRINTER OBJ 3052 11-25-89 1:07p
REPOFORM OBJ 2935 11-25-89 12:40p
REPORT OBJ 2724 11-25-89 12:38p
TABLE OBJ 8150 11-25-89 12:38p
USERHELP OBJ 3506 11-27-89 8:58a
While generating your programs, Adam will automatically use these
three library objects.
ADAMLIBA.OBJ
ADAMLIBB.OBJ
MULTUSER.OBJ
Adam will also automatically use any library objects starting with
ADAMLIB*.OBJ. This gives you the ability to add new library files
as you need them.
Adam will always use any library objects that have been flagged in
Adams procedure library with a '√' symbol. The only difference is
that when Adam finds a file starting with 'ADAMLIB' it will flag
these files automatically when you first run the Adam program.
One of the features designed in Adam is that these library objects
do not have to be documented as far as how they are called, or how
many parameters to pass to them.
About the only information you will need in order to use them, is
what each file can be used for. Most of the time you will be able
to determine this just by the files name. The following pages list
all the library object files, what procedures or functions are in
each file, and what each procedure or function is used for.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 48 ║ │║ OBJECT FILES ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
ADAMLIBA.OBJ
____________
WINDOW This procedure controls all of the different types
of windows Adam can display. It can be called using
the following syntax:
DO window WITH rt,ct,rb,cb,'color',type,snd
ZOOM() This function provides a zoom type window. Call it
with the following code. Object file to zoom into,
starting coordinates, ending window coordinates.
ZOOM( 'obj',rt,ct,rb,cb,t,l,b,r )
ZOOMIT() Function used by ZOOM()
BROWTEST() Handles all browse, lookup and picklist keystrokes.
GETANS() Returns the memory variable TRIM(ans). Can be used
with the following code:
GETANS( 'message','default','valid' )
MEDIT() Used for memoedit in TABLE VIEW.
PCHECK() Test for printer ready prompt user to retry or quit
used by REPORT.OBJ and LABELS.OBJ.
IF !PCHECK()
RETURN
ENDIF
CENTER() Center messages.
@ 0,0 SAY CENTER( 'message' )
FCONTENT() Sort array. Used by LETTERS.OBJ and USERHELP.OBJ.
FCONTENT( 'array' )
READIT() Used in place of the following code:
SET CURSOR ON
READ
SET CURSOR OFF
DOS Provides a DOS shell.
TODAY() Returns DATE() as MONTH,DAY,YEAR.
@ 0,0 SAY TODAY( date() )
GETDBF() Creates a popup menu for file selections, returns
selection in variable 'dbf'.
GETDBF( 'filemask','message' )
SETUP Default clipper enviroment settings.
EDITMENU() Default menu for custom EDIT windows.
┌──────┐
╔════════════════════════════════════════════════════════════════════╗ ╔═════╗ │
║ OBJECT FILES ║ ║ 49 ║ │
╚════════════════════════════════════════════════════════════════════╝ ╚═════╝─┘
ADAMLIBB.OBJ
____________
FILTER Controls filter condition database, used to store
users filters.
GETEXPR Used by FILTER procedure.
GETPHRA Used by FILTER procedure.
GOTOREC Used by FILTER procedure.
OPENFILE() Opens a database in the next available workarea for
single or multiuser mode.
OPENFILE( 'filename' )
MAKEDBF Create a database structure. See example in LETTERS
.OBJ program.
DBMENU() Popup menu function returns file selection in 'dbf'
DBMENU( rt,ct,rb,'color','mask' )
FILEOK() Checks if file exists and prompts user to overwrite
if desired.
DELAY() Time delay function used by animation code. A count
of 5 is about one second on a 8mhz AT.
DELAY( 50 )
MOVE() Scroll text message at selected screen location.
The WINDOW WIDTH is the area to contain the message
inside of.
MOVE( 'message',row,col,window width )
PLAYIT() Plays music in Adam format created with MUSIC MAN.
WAITFOR() Waits for a keypress.
WAITFOR( 27 ) && wait for ESC keypress.
BACKUP .OBJ Provides user assisted file backup utility.
CARDEX .OBJ Index file database for name and address.
DCODE .OBJ Prints bar code listings for code39.
LABELS .OBJ Prints customer mailing labels.
LETTERS .OBJ Mini word processor with mailmerge.
MULTUSER.OBJ Contains all of Adams multiuser functions.
PACKFILE.OBJ Removes deleted records and re-indexes file.
POPCAL .OBJ Provides a pop-up calendar.
PRINTER .OBJ Printer configuration utility.
REPOFORM.OBJ Allows end user to select field list for reports.
REPORT .OBJ Pre-designed report utility.
TABLE .OBJ Provides automatic browse and edit window for file
maintenance.
USERHELP.OBJ Works similar to 'LETTERS.OBJ' but provides program
documentation system.
┌──────┐
╔═════╗ │╔═════════════════════════════════════════════════════════════════════╗
║ 50 ║ │║ A BRIEF HISTORY ║
╚═════╝─┘╚═════════════════════════════════════════════════════════════════════╝
The following information is provided to give you a look into how,
and why Adam was created. It's been over two years since the first
concept of Adam began.
I was working with a template system called VIEWGEN, developed by
a friend of mine, Luis Castro. At the time I was deeply involved
with creating and modifying templates for this system.
Over the course of the next two years, an idea crept into my mind
about a new kind of software. I envisioned a program development
system that had a built in intelligence.
I kept thinking about a program or procedure that could reshape it
self sort of a muli-purpose object that could become a totally new
object based on certain conditions or information that we gave it.
That's when the term SMART OBJECTS, first entered into the picture
and totally started to consume my thoughts. What I was looking for
was an object that could communicate with the developer and the
development system. Kind of like passing question and answers back
and forth between the two.
At this time I did not have any idea about how all this would ever
work, I just knew there had to be a better way of creating custom
designed programs. Not just a database program, but any kind of
program or utility.
Meanwhile I kept working on templates and custom programming jobs,
but I also started writing all kinds of small routines. One was a
menu generator, and another was a screen design tool, etc. etc...
I had no immediate use for these small utilities, so I just filed
them away. This went on for about the first year and then all of a
sudden it dawned on me... Why not take regular procedures and use
the seldom used 'NOTE' command in Clipper which stands for comment
and use this as a way to pass information from the procedure, to a
developer. Besides almost everyone uses an asterisk '*' for their
program comments anyway.
The name for Adam came almost at the same time. I though of what
I was trying to accomplish and came up with 'ADVANCED DATA ACCESS
MANAGER' or ADAM for short.
We'll by the time I had the name for the program I already had one
year of tried and tested routines that I needed to make Adam work!
The only strange thing about all this was that I found myself with
programming utilities that only a program development system like
Adam could use which means I wrote specific routines for a program
that did not even exist at the time.
I hope you find Adam as interesting and profitable as I do.
Sincerely,
Tom Dempsey